﻿namespace Borg
{
    public class RuntimeInternals
    {
        private readonly Runtime _runtime;

        public Runtime Runtime
        {
            get { return _runtime; }
        }

        public TypeBuilder TypeBuilder
        {
            get { return TypeStoreModifier.TypeBuilder; }
        }

        public Activator Activator
        {
            get { return _runtime.Activator; }
        }

        public Notifier Notifier
        {
            get { return _runtime.Notifier; }
        }

        public TypeStore.Modifier TypeStoreModifier
        {
            get { return _runtime.TypeStoreModifier; }
        }

        public InstanceStore.Modifier InstanceStoreModifier
        {
            get { return _runtime.InstanceStoreModifier; }
        }

        public Persistor Persistor
        {
            get { return _runtime.Persistor; }
        }

        public SettingStore SettingStore
        {
            get { return _runtime.SettingStore; }
        }

        public SettingProvider SettingProvider
        {
            get { return _runtime.SettingProvider; }
        }

        internal RuntimeInternals(Runtime runtime)
        {
            _runtime = runtime;
        }
    }
}
